#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
using namespace std;
int n;
bool check(int a,int b,int c,int d,int e){
	if((a>255)||(a<0)){
		return false;
	}
	if((b>255)||(b<0)){
		return false;
	}
	if((c>255)||(c<0)){
		return false;
	}
	if((d>255)||(d<0)){
		return false;
	}
	if((e>65535)||(e<0)){
		return false;
	}
	return true;
}
map<string,int> mp;
int main(){
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	cin>>n;
	for(int kk=1;kk<=n;kk++){
		char op[15];
		scanf("%s",op);
		char ch[100];
		scanf("%s",ch);
		int a1[10];
		int id=0,len=strlen(ch);
		bool flag=true;
		for(int i=0;i<5;i++){
			int tmp=0,ttttt=id,cnt=0;
			bool f2=false;
			while((ch[id]>='0')&&(ch[id]<='9')){
				if(ch[ttttt]=='0'){
					f2=true;
				}
				if(id==len){
					break;
				}
				tmp=tmp*10+ch[id]-'0';
				id++;
				cnt++;
			}
			a1[i]=tmp;
			if(i<3){
				if(ch[id]!='.'){
					flag=false;
					break;
				}
			}else if(i==3){
				if(ch[id]!=':'){
					flag=false;
					break;
				}
			}
			if((f2==true)&&(cnt>1)){
				flag=false;
				break;
			}
			id++;
		}
		if((check(a1[0],a1[1],a1[2],a1[3],a1[4])==false)||(flag==false)){
			printf("ERR\n");
			continue;
		}
		string str;
		for(int i=0;i<len;i++){
			str+=ch[i];
		}
		if(op[0]=='S'){
			if(mp[str]!=0){
				printf("FAIL\n");
				continue;
			}else{
				mp[str]=kk;
				printf("OK\n");
			}
		}else{
			if(mp[str]==0){
				printf("FAIL\n");
			}else{
				printf("%d\n",mp[str]);
			}
		}
	}
	return 0;
}
